import common from "./BQGIS-modelTool"
/**
 * 水面特效
 * @param    viewer  Mars3d实例对象
 * @returns 
 */
export function initBQGIS_waterEffect(viewer = window.viewer){
    return new BQGIS_waterEffect(viewer)
}
export function BQGIS_waterEffect(viewer = window.viewer){
    this.viewer = viewer
    // 创建矢量数据图层
    this.graphicLayer = new mars3d.layer.GraphicLayer()
    this.viewer.addLayer(this.graphicLayer)
    this.common=new common()
}
/**
 * 
 * @param {*} option 
 * @returns 
 */
BQGIS_waterEffect.prototype.addWaterEffect=function(option={}){
    let param = Object.assign({
        id:this.common.guid(),
        name:'水面特效',
        height:3,//水面高度
        normalMap:require('./waterNormals.jpg'),//法线图片
        frequency: 8000.0, // 控制波数的数字。
        animationSpeed: 0.02, // 控制水的动画速度的数字。
        amplitude: 5.0, // 控制水波振幅的数字。
        specularIntensity: 0.8, // 控制镜面反射强度的数字。
        baseWaterColor: "#006ab4", // rgba颜色对象基础颜色的水。#00ffff,#00baff,#006ab4
        blendColor: "#006ab4", // 从水中混合到非水域时使用的rgba颜色对象。
        opacity: 0.7, // 透明度
        isSave:false,
        positions:[]

    },option)
    let graphic=new mars3d.graphic.Water({
        positions:param.positions,
        id:param.id,
        name:param.name,
        style:{
            height:param.height,
            normalMap:param.normalMap,
            frequency:param.frequency,
            animationSpeed:param.animationSpeed,
            amplitude:param.amplitude,
            specularIntensity:param.specularIntensity,
            baseWaterColor:param.baseWaterColor,
            blendColor:param.blendColor,
            opacity:param.opacity,
            positions:param.positions
        }
    })
    this.graphicLayer.addGraphic(graphic)
    if(param.isSave){
        //param.positions=this.common.getLngLat(graphic.position.getValue())
        this.common.saveSymbolAttribute({id:param.id, type:'WaterEffect',typeName:'水面特效',attribute:JSON.stringify(param)},true)
    }
    return param.id
}
/**
 * 根据id清楚水面特效
 * @param  id 
 */
BQGIS_waterEffect.prototype.removeWaterEffect=function(id){
    let data= this.graphicLayer.getGraphicById(id)
    if(data){
        this.graphicLayer.removeGraphic(data)
    }
}
/**
 * 清楚所有水面特效
 */
BQGIS_waterEffect.prototype.clearWaterEffect=function(){
    this.graphicLayer.clear()
}
/**
 * 当前版本不支持
 * @param {*} option 
 * @returns 
 */
BQGIS_waterEffect.prototype.draw=function(option={}){
    let param = Object.assign({
        id:this.common.guid(),
        name:'水面特效',
        height:3,//水面高度
        normalMap:'waterNormals.jpg',//法线图片
        frequency: 8000.0, // 控制波数的数字。
        animationSpeed: 0.02, // 控制水的动画速度的数字。
        amplitude: 5.0, // 控制水波振幅的数字。
        specularIntensity: 0.8, // 控制镜面反射强度的数字。
        baseWaterColor: "#006ab4", // rgba颜色对象基础颜色的水。#00ffff,#00baff,#006ab4
        blendColor: "#006ab4", // 从水中混合到非水域时使用的rgba颜色对象。
        opacity: 0.7, // 透明度
        isSave:false

    },option)
    this.graphicLayer.startDraw({
        id:param.id,
        name:param.name,
        type:'water',
        style:{
            id:param.id,
            name:param.name,
            height:param.height,
            normalMap:param.normalMap,
            frequency:param.frequency,
            animationSpeed:param.animationSpeed,
            amplitude:param.amplitude,
            specularIntensity:param.specularIntensity,
            baseWaterColor:param.baseWaterColor,
            blendColor:param.blendColor,
            opacity:param.opacity,
            
        },
        success: graphic=>{
            console.log('水面数据',graphic);
            if(param.isSave){
                param.positions=[graphic.point.lng,graphic.point.lat,graphic.point.alt]//this.common.getLngLat(graphic.position.getValue())
                this.common.saveSymbolAttribute({id:param.id, type:'WaterEffect',typeName:'水面特效',attribute:JSON.stringify(param)},true)
            }
        }
    })
    return param.id
}